package com.drug.mingkang.mapper;


import com.drug.mingkang.model.HqDrug;
import com.drug.mingkang.model.HqDrugtype;
import com.drug.mingkang.model.vo.ExcelDataVO;
import com.drug.mingkang.model.vo.HqDrugVo;
import com.drug.mingkang.utils.ResponseMessage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 药品表(HqDrug)表数据库访问层
 *
 * @author wenchangjian
 * @since 2020-08-11 12:00:12
 */
public interface HqDrugMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param drugId 主键
     * @return 实例对象
     */
    HqDrug queryById(String drugId);


    int findEveryCount(HqDrug hqDrug);
    int findEveryCounts(@Param("hqDrug")HqDrug hqDrug,@Param("companyId") String companyId);

    /**
     * 查询所有状态为60的药品
     * @param hqDrug
     * @return
     */
    List<HqDrug> findEvery(HqDrug hqDrug);
    List<HqDrug> findEverys(@Param("hqDrug")HqDrug hqDrug,@Param("companyId")String companyId);
    /**
     * 查询行数
     * @return 返回行数
     */
    int selectCount(HqDrug hqDrug);

    /**
     * 查询指定行数据
     *
     * @param page 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    List<HqDrug> queryAllByLimit(@Param("page") int page, @Param("limit") int limit);

    /**
     * 查询总公司库存预警
     * @param hqDrug
     * @return
     */
    List<HqDrug> findDrugWarning(HqDrug hqDrug);

    /**
     * 查询总公司库存预警数量
     * @param hqDrug
     * @return
     */
    int findDrugWarningCount(HqDrug hqDrug);

    /**
     * 关联类型查询指定行数据
     *
     * @return 对象列表
     */
    List<HqDrug> queryAllByType(HqDrug hqDrug);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param hqDrug 实例对象
     * @return 对象列表
     */
    List<HqDrug> queryAll(HqDrug hqDrug);

    /**
     * 根据类型名称批量查询类型id
     * @param list
     * @return
     */
    List<HqDrugtype> getItermByList(List<String> list);

    /**
     * 新增数据
     *
     * @param hqDrug 实例对象
     * @return 影响行数
     */
    int insert(HqDrug hqDrug);

    /**
     * 批量增加
     * @param list
     * @return
     */
    int insertBatch(List<ExcelDataVO> list);

    /**
     * 修改数据
     *
     * @param hqDrug 实例对象
     * @return 影响行数
     */
    int update(HqDrug hqDrug);

    /**
     * 通过主键删除数据
     *
     * @param drugId 主键
     * @return 影响行数
     */
    int deleteById(String drugId);

    /**
     * 查询多条药品类型数据
     *
     * @return 对象列表
     */
    List<HqDrugtype> selectByType();

    /**
     * 通过实体作为筛选条件查询
     * @param hqDrugVo
     * @return
     */
    List<HqDrug> fqueryAll(HqDrugVo hqDrugVo);

    /**
     *查询行数
     * @param hqDrugVo
     * @return
     */
    int fcount(HqDrugVo hqDrugVo);

    /**
     * 修改审核状态
     * @param drugId
     * @return
     */
    int fupdate(@Param("drugId") String drugId);

    /**
     * 通过商品类型查询
     * @author Mr.wang
     * @param typeId 药品类型id
     * @param drugId 药品id
     * @return
     */
    List<HqDrug> queryDrugTypeId(@Param("typeId") String typeId,@Param("drugId") String drugId);

    /**
     * 通过商品类型查询
     * @author Mr.wang
     * @param typeId 药品类型id
     * @return
     */
    List<HqDrug> queryDrugTypeId1(String typeId);


    /**
     * 修改药品审核状态
     * @param drugId
     * @param valueOf
     * @return
     */
    int updateIsva(@Param("drugId") String drugId,@Param("isva") String isva );


    /**
     * 查询小于库存预警的药品
     * @param hqDrugVo
     * @return
     */
    List<HqDrug> addPurchasePlan(HqDrugVo hqDrugVo);


    /**
     * 查询小于库存预警药品的行数
     * @param hqDrugVo
     * @return
     */
    int addPurchasePlanCount(HqDrugVo hqDrugVo);
}